package vip.lsjscl.flowboot.util.lock;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DistributedLock {
    /**
     * 锁的key，支持SpEL表达式
     */
    String key();

    /**
     * 锁的过期时间，默认30秒
     */
    long expire() default 30;

    /**
     * 时间单位，默认秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 获取锁失败时的重试次数，默认不重试
     */
    int retryTimes() default 0;

    /**
     * 重试间隔时间(毫秒)
     */
    long retryInterval() default 100;

    /**
     * 获取锁失败时的自定义错误信息
     */
    String errorMsg() default "系统繁忙，请稍后再试";
}